package com.hznc.wcs.vo.bpm;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description :
 * @Date : 2024/6/24
 * @Author : ChenJin
 * @Version : v1.0.0
 **/
@Data
@Accessors(chain = true)
public class BpmProcessDefinitionRespVO {

    private String id;

    /**
     * 流程定义ID
     */
    private String processDefinitionId;

    /**
     * 流程版本
     */
    private Integer version;

    /**
     * 流程名称
     */
    private String name;

    /**
     * 流程标识
     */
    private String key;

    /**
     * 流程图标
     */
    private String icon;

    /**
     * 流程描述
     */
    private String description;

    /**
     * 流程分类
     */
    private String category;

    /**
     * 流程分类名称
     */
    private String categoryName;

    /**
     * 表单ID
     */
    private String formId;

    /**
     * 表单名称
     */
    private String formName;

    /**
     * 表单配置
     */
    private String formConf;

    /**
     * 表单项
     */
    private String formFields;

    /**
     * 表单类型
     */
    private String formType;

    /**
     * 业务表单创建路径
     */
    private String formCreatePath;

    /**
     * 业务表单查看路径
     */
    private String formViewPath;

    /**
     * 流程挂起状态，参见 SuspensionState 枚举
     */
    private Integer suspensionState;

    /**
     * 流程部署时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime deploymentTime; // 需要从对应的 Deployment 读取，非必须返回
    
    private String bpmnXml; // 需要从对应的 BpmnModel 读取，非必须返回

    /**
     * 表单任务节点权限配置
     */
    private String formFieldsConf;
    
    private List<UserTask> startUserSelectTasks; // 需要从对应的 BpmnModel 读取，非必须返回
    
    public static class UserTask {
        
        private String id;
        
        private String name;

    }
    
}
